type FieldDisplayRule = {
    label: string; 
    format?: (value: any) => string;
};

const fieldDisplayMap: Record<string, FieldDisplayRule> = {
    is_on: {
        label: '状态',
        format: (value) => (value === 'true' ? '开启' : '关闭'),
    },
    pm25_value: {
        label: 'PM2.5',
        format: (value) => `${value} μg/m³`,
    },
    humidity: {
        label: '湿度',
        format: (value) => `${value}%`,
    },
    lock_state: {
        label: '开锁/上锁状态',
        format: (value) => (value === 'true' ? '已上锁' : '未上锁'),
    },
    access_log: {
        label: '开门日志',
        format: (value) => {
            // 示例格式 202505122339 -> 2025年05月12日 23:39
            const year = value.substring(0, 4);
            const month = value.substring(4, 6);
            const day = value.substring(6, 8);
            const hour = value.substring(8, 10);
            const minute = value.substring(10, 12);
            return `${year}年${month}月${day}日 ${hour}:${minute}`;
        }
    },
    is_cateye_on: {
        label: '猫眼视频联动',
        format: (value) => (value === 'true' ? '开启' : '关闭'),
    },
    motion_alert: {
        label: '移动侦测报警',
        format: (value) => (value === 'true' ? '触发' : '未触发'),
    },
    brightness: {
        label: '调光亮度',
        format: (value) => `${value}`,
    },
    color_temp: {
        label: '色温',
        format: (value) => `${value}`,
    },
    target_temp: {
        label: '温度设定',
        format: (value) => `${value}℃`,
    },
    fan_speed: {
        label: '风速调节',
        format: (value) => {
            switch (value) {
                case 'low': return '低速';
                case 'medium': return '中速';
                case 'high': return '高速';
                case 'auto': return '自动';
                default: return value;
            }
        },
    },
    swing_mode: {
        label: '风向调节',
        format: (value) => {
            switch (value) {
                case 'fixed': return '固定';
                case 'vertical': return '垂直';
                case 'horizontal': return '水平';
                case 'swing': return '摆动';
                default: return value;
            }
        },
    },
    mist_level: {
        label: '加湿挡位',
        format: (value) => {
            switch (value) {
                case 'low': return '低挡';
                case 'medium': return '中挡';
                case 'high': return '高挡';
                default: return value;
            }
        },
    },
    water_level_low: {
        label: '缺水警告',
        format: (value) => (value === 'true' ? '缺水' : '正常'),
    },
    percent: {
        label: '开合比例',
        format: (value) => `${value}%`,
    },
    is_power_on: {
        label: '开关状态',
        format: (value) => (value === 'true' ? '开启' : '关闭'),
    },
    wash_program: {
        label: '洗衣程序',
        format: (value) => {
            switch (value) {
                case 'quick': return '快洗';
                case 'normal': return '标准洗';
                case 'bulky': return '大件';
                default: return value;
            }
        },
    },
    remaining_time_min: {
        label: '剩余时间',
        format: (value) => `${value}分钟`,
    },
    status: {
        label: '工作状态',
        format: (value) => {
            switch (value) {
                case 'standby': return '待机';
                case 'cleaning': return '清扫中';
                case 'paused': return '暂停';
                case 'returning': return '回充';
                default: return value;
            }
        },
    },
    cleaning_mode: {
        label: '清扫模式',
        format: (value) => {
            switch (value) {
                case 'whole': return '全屋';
                case 'spot': return '定点';
                case 'edge': return '沿边';
                default: return value;
            }
        },
    },
    battery_level: {
        label: '电量',
        format: (value) => `${value}%`,
    },
    fridge_temp: {
        label: '冷藏温度',
        format: (value) => `${value}℃`,
    },
    freezer_temp: {
        label: '冷冻温度',
        format: (value) => `${value}℃`,
    },
    mode: {
        label: '模式',
        format: (value) => {
            switch (value) {
                case 'cool': return '制冷';
                case 'heat': return '制热';
                case 'dry': return '除湿';
                case 'fan': return '送风';
                case 'energy_saving': return '节能';
                case 'quick_cool': return '速冷';
                case 'holiday': return '假日';
                case 'constant': return '恒温';
                case 'eco': return '节能';
                case 'quick': return '快速';
                case 'turbo': return '涡轮';
                case 'sleep': return '睡眠';
                default: return value;
            }
        },
    },
    is_running: {
        label: '运行状态',
        format: (value) => (value === 'true' ? '运行中' : '停止/待机'),
    },
    wash_mode: {
        label: '清洗程序',
        format: (value) => {
            switch (value) {
                case 'strong': return '强力';
                case 'quick': return '快速';
                case 'eco': return '节能';
                default: return value;
            }
        },
    },
    schedule_time: {
        label: '预约加热时间',
        format: (value) => value,
    },
    timer_minutes: {
        label: '定时运行',
        format: (value) => `${value}分钟`,
    },
    volume: {
        label: '音量',
        format: (value) => `${value}`,
    },
    input_source: {
        label: '输入源',
        format: (value) => {
            switch (value) {
                case 'hdmi': return 'HDMI';
                case 'usb': return 'USB';
                case 'cast': return '投屏';
                default: return value;
            }
        },
    },
    playback_status: {
        label: '播放状态',
        format: (value) => {
            switch (value) {
                case 'playing': return '播放中';
                case 'paused': return '暂停';
                case 'stopped': return '停止';
                default: return value;
            }
        },
    },
    current_media: {
        label: '当前播放内容',
        format: (value) => value,
    },
    temperature_c: {
        label: '当前温度',
        format: (value) => `${value}℃`,
    },
    humidity_percent: {
        label: '当前湿度',
        format: (value) => `${value}%`,
    },
    has_motion: {
        label: '人体传感器',
        format: (value) => (value === 'true' ? '检测到运动' : '未检测到'),
    },
    smoke_ppm: {
        label: '烟雾浓度',
        format: (value) => `${value}ppm`,
    },
    co_ppm: {
        label: 'CO 浓度',
        format: (value) => `${value}ppm`,
    },
    alarm_status: {
        label: '报警状态',
        format: (value) => (value === 'alert' ? '报警' : '正常'),
    },
};

export const getDisplayValue = (key: string, value: any): string | null => {
    const rule = fieldDisplayMap[key];
    if (!rule) return null;

    const { label, format } = rule;
    const displayValue = format ? format(value) : value;

    return `${label}: ${displayValue}`;
};

export const getDisplayValueFromState = (state: Record<string, any>): string | null => {
    // 如果 state 中没有 is_on 或者 is_on 为 true
    if (!('is_on' in state) || state.is_on === true || state.is_running === true) {
        // 遍历 state 的所有键
        for (const key in state) {
        // 跳过 is_on 自身
        if (key === 'is_on') continue;
        
        // 尝试获取该字段的显示值
        const displayValue = getDisplayValue(key, state[key]);
        if (displayValue) return displayValue;
        }
        
        // 如果其他字段都没有找到可显示的值，返回 null
        return null;
    }
    
    // 如果有 is_on 且为 false，直接返回它的显示值
    return getDisplayValue('is_on', false);
};